上一篇安裝DotNetNuke專案範本後,這篇就利用DotNetNuke的專案範本來建立一個新的模組專案吧!
開啟Visual Studio之後建立新的專案,會發現在Web專案範本裡面多了「DotNetNuke Compiled Module」專案範本,我們利用這個專案範本建立一個新的專案,取名為SimpleModule。
專案建立之後,會看到預設開啟一個html的說明頁面,從方案總管中也可以看到範本內已經有View、Edit、Settings三種UserControl,以及相關的Resx語系資源檔。
除了UserControl和Resx資源檔以外,還可以發現在Components資料夾中有四個檔案,分別是DataProvider、[ModuleName]Controller、[ModuleName]Info、SqlDataProvider,以近幾年熱門的MVC開發方式而言,Model就是[ModuleName]Info、View就是UserControl、Controller就是[ModuleName]Controller了吧!所以DotNetNuke在很早的版本就已經有使用類似的方法將這三者分開了。
至於DataProvider和SqlDataProvider則是資料存取的抽象和實作類別,DataProvider負責定義模組所需要的資料存取有哪些方法,而SqlDataProvider則負責實作SQL Server資料庫的存取方式,因此若是要將DotNetNuke內的任何一個模組改成別的資料庫系統,例如:MySQL,只需要新增MySqlDataProvider並繼承DataProvider類別來實作MySQL的資料存取方式即可。
專案範本內的檔案雖然不算多,但是也需要花點時間稍作說明,因此後續將分為幾篇來慢慢的介紹這些內容。
在開始詳細的看檔案內容之前,專案中遺失的參考項目最好更新一下,請找到DotNetNuke網站Bin資料夾下相關的dll檔案。
首先就讓我們先來看一下ViewSimpleModule.ascx.cs的檔案內容吧!
使用DotNetNuke的專案範本的好處就是很多東西都已經加好了,像是DotNetNuke相關的Namespace、該繼承的Class和可能要實作的Interface等…,不過第一步我們必須先將圖中劃紅線的YourCompany更改成想要的名字。
接下來Event Handlers裡面有兩個Event,分別是Page_Load和lstContent_ItemDataBound,lstContent是DataList物件(見ViewSimpleModule.ascx),畫面呈現資料用的,這邊我們不打算看它(註),只看Page_Load的內容:
(註:lstContent_ItemDataBound和DotNetNuke的使用較無直接關係,有興趣的讀者請自行參閱)
從上面的程式碼我們就可以看到[ModuleName]Controller、[ModuleName]Info的使用,以及該如何透過Controller新增一筆資料。
因為DotNetNuke的模組大部份都會繼承PortalModuleBase這個Class,所以ModuleId和UserId是在模組當中可以直接使用的屬性,代表模組的編號和使用者的編號,都是用來識別用的。
Localization的使用方式在「DotNetNuke模組的多國語系」有稍微提到,LocalResourceFile也是由PortalModuleBase所提供的屬性,使用Localization類別的靜態方法取得資源檔內容時一般情況下都需要傳入這個屬性的值。
另外,在Page_Load事件中可以發現有使用Try-Catch,這部份是為了在有錯誤發生的時候,可以透過DotNetNuke的例外處理方式將發生的Exception內容給記錄下來,所以Exceptions類別也是DotNetNuke處理錯誤的常用類別。
在Optional Interfaces裡面是實作IActionable的ModuleActions屬性,如果讀者還有印象,就是HTML模組用來編輯內容的那個選項。
(本例沒有加入EditContent的Action,所以Edit Content的圖僅供參考)
在SimpleModule.ascx檔案的部份,比較和DotNetNuke有關的是圖中劃紅線的地方:
(黃線的部份別忘了改唷!)
EditUrl和IsEditable也是PortalModuleBase父類別所提供的方法和屬性,EditUrl用來取得轉換到Edit型態UserControl所需要的Url網址。
2013/10/5 Update:補上模組執行的畫面提供給讀者參考。
圖中的ModuleId和ItemId這些屬性的值是透過Settings裡的template值來設定,有興趣的讀者可以參考ViewSimpleModule.ascx.cs的lstContent_ItemDataBound事件就能略知一二。
(本文同步發表於泰克哪裡去部落格)
[鐵人賽Day1]DotNetNuke簡介
[鐵人賽Day2]DotNetNuke安裝前置作業
[鐵人賽Day3]DotNetNuke安裝-傳統方式安裝在IIS
[鐵人賽Day4]DotNetNuke安裝-透過Web PI安裝
[鐵人賽Day5]DotNetNuke安裝-使用Windows Azure Website
[鐵人賽Day6]DotNetNuke網站結構說明
[鐵人賽Day7]安裝DotNetNuke語系
[鐵人賽Day8]DotNetNuke-新增頁面與模組
[鐵人賽Day9]第一個DotNetNuke模組-Hello DotNetNuke
[鐵人賽Day10]DotNetNuke模組的多國語系
[鐵人賽Day11]安裝DotNetNuke專案範本
[鐵人賽Day13]DotNetNuke模組設計範本–SimpleModule(2)
[鐵人賽Day14]DotNetNuke模組設計範本–SimpleModule(3)
[鐵人賽Day15]DotNetNuke模組設計範本–SimpleModule(4)
[鐵人賽Day16]DotNetNuke使用篇–會員帳號設定(User Account Settings)
[鐵人賽Day17]DotNetNuke使用篇–第三方帳號驗證
[鐵人賽Day18]DotNetNuke使用篇–管理使用者帳號、角色
[鐵人賽Day19]DotNetNuke使用篇–建立子網站
[鐵人賽Day20]DotNetNuke使用篇–內容多語系化
[鐵人賽Day21]DotNetNuke使用篇–Host設定介紹
[鐵人賽Day22]DotNetNuke使用篇–網站設定(Site Settings)介紹
[鐵人賽Day23]翻譯DotNetNuke–使用語言編輯器
[鐵人賽Day24]DotNetNuke的網頁選單(Menu)翻譯
[鐵人賽Day25]設定DotNetNuke的Email範本
[鐵人賽Day26]DotNetNuke寄送郵件功能介紹
[鐵人賽Day27]查看DotNetNuke的執行記錄–事件檢視器(Log Viewer)介紹
[鐵人賽Day28]維護DotNetNuke的清單列表(List)–在Profile中可以下拉選擇台灣的縣市
[鐵人賽Day29]DotNetNuke樣式設計–Skin和Container簡介
[鐵人賽Day30]尋找更多的DotNetNuke擴充套件(Module、Skin)